<!-- 表行 》 操作 》 状态 -->

<template>
  <span>
    <template v-for="x in btnList">
      <!-- 图片按钮 -->
      <img v-if="btn[`${x}Img`]" :key="x" :src="btn[`${x}Img`]" />

      <!-- 图标按钮 -->
      <el-button
        v-else-if="btn[`${x}Icon`]"
        :key="x"
        :size="parentWeb.size"
        type="text"
        :icon="btn[`${x}Icon`]"
        disabled
      />

      <!-- 文本按钮 -->
      <el-button
        v-else
        :key="x"
        :size="parentWeb.size"
        type="text"
        :class="`CoreWeb-BtnText-${x === 'passed' ? 'green' : 'red'}`"
        disabled
      >
        {{ btn[`${x}Text`] }}
      </el-button>
    </template>
  </span>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import mixPath from '../../../mixPath'
import mixRow from '../../mixRow'
import UTIL from '../UTIL'
import TitleBtn from '../../RowTitle/TitleBtn'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'OperateStatus',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [mixPath],

  /**
   * 属性注册 (抽取以便查阅)
   */
  props: {
    ...CORE.WEB.RowCommon,
    ...CORE.WEB.RowOperate,
    row: { type: Object, required: true }, // 行数据
  },

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 父级的 Web 组件
     */
    parentWeb: mixRow.computed.parentWeb,

    /**
     * 绑定值
     */
    value: TitleBtn.computed.value,

    /**
     * 按钮列表
     */
    btnList() {
      const { btns, value } = this
      if (CORE.isArray(btns)) return []

      const btnList = btns[value] || []

      if (btnList.includes('passed')) return ['passed']
      if (btnList.includes('rejed')) return ['rejed']
      return []
    },

    /**
     * 按钮配置
     */
    btn() {
      const { state: { MAP = {} }, passed, rejed } = this

      return {
        passedImg: UTIL.getImg(passed),
        passedIcon: UTIL.getIcon(passed),
        passedText: passed || MAP.PASSED || CORE.MAP.TIP_PASSED,

        rejedImg: UTIL.getImg(rejed),
        rejedIcon: UTIL.getIcon(rejed),
        rejedText: rejed || MAP.REJED || CORE.MAP.TIP_REJED,
      }
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 获取绑定值
     */
    getValue: TitleBtn.methods.getValue,
  },
}
</script>
